home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
MiscKit1.7.1
/
MiscKit
/
Makefile
< prev
next >
Wrap
Makefile
|
1996-02-12
|
15KB
|
334 lines
# Top-level MiscKit Makefile Version 1.7.1
# Originally By Mike Ferris as Part of MOKit
# Modified by Don Yacktman for use by the MiscKit, by permission
# Copyright (C) 1994, by Don Yacktman, all rights reserved.
#########################################################################
# Here are the things that you can safely configure... #
# 1. Where the MiscKit is installed #
# 2. Whether or not the audio alerts are played #
# 3. Whether or not the README is forced upon you #
# 4. Which target architectures which are compiled #
# 5. Special flags used when building precompiled headers #
# 6. Where to find a "tar" command that can handle long filenames #
#########################################################################
# Change root to somewhere in your account if you can't install to
# /LocalDeveloper... Warning: do not use a ~ in ROOT; it must be absolute!
ROOT =
# Go ahead and change these to suit your taste--and patience.
AUDIOALERTS = YES # Anything but "YES" will shut them up.
SHOWREADME = YES # Anything but "YES" will supress automatic opening...
# Below, uncomment the architectures that you want. Make sure your compiler
# actually supports the selected architectures for it to work!
# Comment out any that aren't useful to you or your compiler won't support.
MOTOROLA_ARCH = m68k # Motorola (680x0) architecture
INTEL_ARCH = i386 # Intel x86 architecture
HP_ARCH = hppa # PA-RISC architecture
SPARC_ARCH = sparc # SPARC architecture
POWER_ARCH = #m98k # Power PC architecture. Yeah, this is wishful thinking!
ALPHA_ARCH = #alpha # DEC Alpha architecture. Yeah, this is wishful thinking!
OTHER_ARCH = # Add other architectures here. We can hope...
# Configure this to define anything special you might need when building
# the MiscKit precompiled headers. For example, remove the pound sign
# below if you plan to use the MiscKit under NEXTSTEP-J.
PRECOMP_FLAGS = # -DKANJI
# GNU tar is preferred since some paths we will try to tar up for
# installation are longer than tar's 100 character limit. Regular
# tar will NOT work for the install because of this!
TAR = /usr/bin/gnutar # for NS 3.2 or greater
#TAR = /usr/local/bin/gnutar
# This tar handles long filenames if you haven't got gnutar
#TAR = /NextAdmin/Installer.app/installer_bigtar
#########################################################################
# Don't mess with anything beyond this line or you might mess something #
# up beyond all hope of the gods and man. Unless, of course, you #
# actually do know what you're doing...which may well be the case... #
#########################################################################
ARCHITECTURES = $(MOTOROLA_ARCH) $(INTEL_ARCH) $(HP_ARCH) \
$(SPARC_ARCH) $(POWER_ARCH) $(ALPHA_ARCH) $(OTHER_ARCH)
ARCH_TOOL = /usr/lib/arch_tool
TOOL_MAKE = /NextDeveloper/Makefiles/app/tool.make
ARCHIFY = $(ARCH_TOOL) -archify_list
ARCH_FLAGS = `$(ARCHIFY) $(ARCHITECTURES)`
LN_S = ln -s
MAKE_PROG = /bin/make
NAME = MiscKit
INSTALLROOT = $(ROOT)/LocalDeveloper
DOC_INSTALL = $(INSTALLROOT)/Documentation/$(NAME)
LIB_INSTALL = $(INSTALLROOT)/Libraries
HEADER_INSTALL = $(INSTALLROOT)/Headers
PALETTE_INSTALL = $(INSTALLROOT)/Palettes
MAKEFILE_INSTALL = $(INSTALLROOT)/Makefiles
EXAMPLE_SRC_INSTALL = $(INSTALLROOT)/Examples/$(NAME)
# These next six targets are all that should need to be modified in
# order to add new MiscKit resources, as long as the resource has the
# proper Misc* prefix naming convention.
BUNDLES = MiscFindPanel MiscString MiscStringArray MiscDictionary
LIBRARIES = MiscKit MiscInspectorKit MiscMergeKit MiscString MiscGISKit
PALETTES_WITH_LIBS = MiscClockPalette MiscProgressPalette MiscDragViews \
MiscThreeStateButton MiscArrowButtonPalette MiscColorWells \
MiscValueFieldPalette MiscCircularSlider MiscLogSliderPalette\
MiscCalendarPalette MiscSoundPalette MiscTeePalette \
MiscDatePalette MiscClassDecoderPalette MiscShell \
MiscTabMatrixPalette MiscSwapKitPalette MiscGaugePalette \
MiscPaperViewPalette MiscClipTextPalette MiscTableScroll
PALETTES = $(PALETTES_WITH_LIBS) MiscCoolButtons MiscString IBMole
# Examples that test the MiscKit but don't install to /LocalDeveloper/Examples
TESTAPP_EXAMPLES = MiscLockFile MiscLogFile MiscPriorityQueue MiscString \
DragViewTest MiscStringRegex TestExplodingMenus TableParse \
MailTest MiscDistributor
# Makefile extensions that install to /LocalDeveloper/Makefiles
MAKEFILE_EXTENSIONS = submission.make language.make
# Examples that test the MiscKit and do install to /LocalDeveloper/Examples
EXAMPLEAPP_EXAMPLES = MiscStringService TreeView SearchBench TinyTerm \
receiptfilter MiscTree_Browser generate-makefile cnvwrap \
MiscClassDecoder qlipo UNIX-HatersTool UsersAndGroups \
FileBrowser FileSearchTest BPM MergeTest MiscGISMapCoord \
Robby ScrollDir image2m LazyScrollDir SplitView IconTester
# Example stuff that installs to /LocalDeveloper/Examples but doesn't compile
EXAMPLEOTHERS = Interfaces DocTemplates IBMole ProjectTemplates getset \
AutoDoc format_comment
include Makefiles/$(NAME).version # grabs the version number
help:
@echo ""
@echo "************ Welcome to the $(NAME)! ************"
@echo ""
@echo "The following Makefile targets are available:"
@echo " make install -- build and install the $(NAME)"
@echo " make lib -- build the $(NAME) library"
@echo " make bundles -- build the $(NAME) bundle projects"
@echo " make palettes -- build the $(NAME) palette projects"
@echo " make examples -- build the $(NAME) example applications"
@echo " make debug -- build the $(NAME) debugging libraries"
@echo " make profile -- build the $(NAME) profiling libraries"
@echo " make all -- build all six of the above targets"
@echo " make uninstall -- remove the $(NAME) installation"
@echo " make distclean -- clean the $(NAME) to a pristine distribution"
@echo ""
@echo "See documentation for other targets such as: help, prep,"
@echo "build_debug_core, build_core, install_core, _install"
@echo ""
@echo "Read README.rtf first to catch any last minute gotchas! Before"
@echo "installing you should agree with the terms of the $(NAME)"
@echo "license as it appears in License.rtf."
@echo ""
@echo "The $(NAME) Version $(FULL_VERSION) (C) 1995 by Don Yacktman"
@echo ""
@echo "Current Makefile configuration is to compile the following"
@echo "architectures: $(ARCHITECTURES)"
all: lib bundles palettes examples debug profile
prep:
@if (test -f .prepped) ; then echo "Prepped...OK" ; \
else echo "Prepping for make..." ; \
Makefiles/prepmake $(ARCH_TOOL) $(TOOL_MAKE) ; fi
@touch .prepped
lib: prep
@(if test $(SHOWREADME) = YES; then open README.rtf; fi)&
@(if test $(AUDIOALERTS) = YES; then sndplay Makefiles/MiscBuild.snd; fi)&
@echo "************ Libraries ************"
@for i in $(LIBRARIES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i library" ; \
(cd Source/$$i; $(MAKE_PROG) lib "TARGET_ARCHS=$(ARCHITECTURES)"; mv *.a ..) ; \
done ;
@echo "************ Check main Library ************"
@echo "*** If there is text between this message and the end of main"
@echo "*** library check message, then an object file could be"
@echo "*** missing from the library. Check the README.rtf for details."
@-(cd Source; otool -O libMiscKit.a > .otool.out; \
diff .otool.correct .otool.out; )
@echo "************ End of main Library check ************"
debug: prep
@echo "************ Debug Library ************"
@for i in $(LIBRARIES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i library" ; \
(cd Source/$$i; $(MAKE_PROG) debuglib "TARGET_ARCHS=$(ARCHITECTURES)"; mv *.a ..) ; \
done ;
profile: prep
@echo "************ Profile Library ************"
@for i in $(LIBRARIES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i library" ; \
(cd Source/$$i; $(MAKE_PROG) profilelib "TARGET_ARCHS=$(ARCHITECTURES)"; mv *.a ..) ; \
done ;
bundles: prep
@echo "************ Bundles ************"
@for i in $(BUNDLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i class bundle" ; \
(cd Bundles/$$i; $(MAKE_PROG) "TARGET_ARCHS=$(ARCHITECTURES)"; ) ; \
done ;
examples: lib bundles palettes
@echo "************ Examples ************"
@for i in $(TESTAPP_EXAMPLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i test app" ; \
(cd Examples/$$i; $(MAKE_PROG) "TARGET_ARCHS=$(ARCHITECTURES)"; ) ; \
done ;
@for i in $(EXAMPLEAPP_EXAMPLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i example app" ; \
(cd Examples/$$i; $(MAKE_PROG) "TARGET_ARCHS=$(ARCHITECTURES)"; ) ; \
done ;
palettes: bundles
@echo "************ Palettes ************"
@for i in $(PALETTES) none ; do \
if [ $$i = none ] ; then continue; fi; \
echo "*** Making $$i palette" ; \
(cd Palettes/$$i; $(MAKE_PROG) "TARGET_ARCHS=$(ARCHITECTURES)"; ) ; \
done ;
build_debug_core: prep
@(if test $(SHOWREADME) = YES; then open README.rtf; fi)&
@(if test $(AUDIOALERTS) = YES; then sndplay Makefiles/MiscBuild.snd; fi)&
@echo "************ DEBUG Library ************"
(cd Source/MiscKit; $(MAKE_PROG) debuglib "TARGET_ARCHS=$(ARCHITECTURES)"; \
mv *.a ..) ;
build_core: prep
@(if test $(SHOWREADME) = YES; then open README.rtf; fi)&
@(if test $(AUDIOALERTS) = YES; then sndplay Makefiles/MiscBuild.snd; fi)&
@echo "************ Library ************"
(cd Source/MiscKit; $(MAKE_PROG) lib "TARGET_ARCHS=$(ARCHITECTURES)"; \
mv *.a ..) ;
@echo "************ Check main Library ************"
@echo "*** If there is text between this message and the end of main"
@echo "*** library check message, then an object file could be"
@echo "*** missing from the library. Check the README.rtf for details."
@-(cd Source; otool -O libMiscKit.a > .otool.out; \
diff .otool.correct .otool.out; )
@echo "************ End of main Library check ************"
install_core: build_core
@echo "*** Installing library to $(LIB_INSTALL)"
mkdirs $(LIB_INSTALL)
(cd Source; $(TAR) -cf - lib*.a | (cd $(LIB_INSTALL); $(TAR) -xf - ;))
@echo "*** Installing headers to $(HEADER_INSTALL)"
mkdirs $(HEADER_INSTALL)
(cd Headers; $(TAR) -cf - * | (cd $(HEADER_INSTALL); $(TAR) -xf - ;))
(cd $(HEADER_INSTALL)/misckit; cc -O -g -Wall -ObjC -I$(HEADER_INSTALL) \
-precomp $(ARCH_FLAGS) $(PRECOMP_FLAGS) misckit.h -o misckit.p)
_install:
@echo "************ Installing $(NAME) ************"
@echo "*** Installing libraries to $(LIB_INSTALL)"
mkdirs $(LIB_INSTALL)
(cd Source; $(TAR) -cf - lib*.a | (cd $(LIB_INSTALL); $(TAR) -xf - ;))
for i in $(PALETTES_WITH_LIBS) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Palettes/$$i; $(TAR) -cf - *.a | \
(cd $(LIB_INSTALL); $(TAR) -xf - ;)) ; \
done ;
@echo "*** Installing headers to $(HEADER_INSTALL)"
mkdirs $(HEADER_INSTALL)
(cd Headers; $(TAR) -cf - * | (cd $(HEADER_INSTALL); $(TAR) -xf - ;))
for i in $(PALETTES_WITH_LIBS) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Palettes/$$i; cp *.subproj/*.h $(HEADER_INSTALL)/misckit; ) \
done ;
# build the precomp header
(cd $(HEADER_INSTALL)/misckit; cc -O -g -Wall -ObjC -I$(HEADER_INSTALL) \
-precomp $(ARCH_FLAGS) $(PRECOMP_FLAGS) misckit.h -o misckit.p)
@echo "*** Installing documentation to $(DOC_INSTALL)"
rm -rf $(DOC_INSTALL)
mkdirs $(DOC_INSTALL)
(cd Documentation; $(TAR) -cf - * .??* | (cd $(DOC_INSTALL); $(TAR) -xf - ;))
@echo "*** Building index for documentation ***
ixbuild -cs $(DOC_INSTALL)
@echo "*** Installing palettes to $(PALETTE_INSTALL)"
mkdirs $(PALETTE_INSTALL)
# this is inefficient speed-wise, but makes for smaller palettes than the
# tar method because it strips them. Installs only happen once, and the
# saved space is significant, so we'll take the performance hit.
for i in $(PALETTES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Palettes/$$i; $(MAKE_PROG) install INSTALLDIR=$(PALETTE_INSTALL) \
"TARGET_ARCHS=$(ARCHITECTURES)"; ) \
done ;
@echo "*** Installing supplementary Makefiles to $(MAKEFILE_INSTALL)"
mkdirs $(MAKEFILE_INSTALL)
(cd Makefiles; $(TAR) -chf - $(MAKEFILE_EXTENSIONS) | \
(cd $(MAKEFILE_INSTALL); $(TAR) -xf - ;))
@echo "*** Installing example source code to $(EXAMPLE_SRC_INSTALL)"
mkdirs $(EXAMPLE_SRC_INSTALL)
(cd Examples; $(TAR) -chf - $(EXAMPLEAPP_EXAMPLES) $(EXAMPLEOTHERS) .??* | \
(cd $(EXAMPLE_SRC_INSTALL); $(TAR) -xf - ;))
@(if test $(AUDIOALERTS) = YES; then sndplay Makefiles/MiscFinish.snd; fi)&
install: lib palettes _install
uninstall:
@echo "************ Uninstalling $(NAME) ************"
rm -rf $(LIB_INSTALL)/libMisc*.a \
$(HEADER_INSTALL)/misckit \
$(HEADER_INSTALL)/daymisckit \
$(HEADER_INSTALL)/ExtendedApp.h \
$(PALETTE_INSTALL)/IBMole.palette \
$(PALETTE_INSTALL)/Misc*.palette \
$(DOC_INSTALL) $(EXAMPLE_SRC_INSTALL) \
$(MAKEFILE_INSTALL)/submission.make \
$(MAKEFILE_INSTALL)/language.make
distclean:
@echo "************ Cleaning for distribution ************"
@(cd Source; rm -f *.a .otool.out; )
@for i in $(LIBRARIES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Source/$$i; $(MAKE_PROG) clean; ) \
done ;
@(cd Headers/misckit; rm -rf *.p; )
@for i in $(BUNDLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Bundles/$$i; $(MAKE_PROG) clean; ) \
done ;
@for i in $(PALETTES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Palettes/$$i; $(MAKE_PROG) clean; ) \
done ;
@for i in $(TESTAPP_EXAMPLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Examples/$$i; $(MAKE_PROG) clean; ) \
done ;
@for i in $(EXAMPLEAPP_EXAMPLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Examples/$$i; $(MAKE_PROG) clean; ) \
done ;
rm -rf Source/*/.lastBuildTime
# get rid of those pesky .dir3_0.wmd files, but keep the top level one.
@cp .dir3_0.wmd .dir3_0.wmd~
find ./ -name .dir3_0.wmd -print | xargs rm -f
@cp .dir3_0.wmd~ .dir3_0.wmd
@rm -f .dir3_0.wmd~ .prepped
cleanexamples:
@echo "************ Cleaning examples ************"
@for i in $(TESTAPP_EXAMPLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Examples/$$i; $(MAKE_PROG) clean; ) \
done ;
@for i in $(EXAMPLEAPP_EXAMPLES) none ; do \
if [ $$i = none ] ; then continue; fi; \
(cd Examples/$$i; $(MAKE_PROG) clean; ) \
done ;